package com.springboot.fram.core.encryption;

import java.security.MessageDigest;

/**
 * @author Madman 2018年5月10日 MD5加密工具
 */
public class Md5 {

    /**
     * 加密
     * 默认32
     *
     * @param data
     * @return
     */
    public static String encodeMD5(String data) {
        try {
            //相同字串在不同的环境下调用产生了不同的加密字串必须指定编码，否则。。。。。
            byte[] btInput = data.getBytes("utf-8");
            // 获得MD5摘要算法的 MessageDigest 对象
            MessageDigest mdInst = MessageDigest.getInstance("MD5");
            // 使用指定的字节更新摘要
            mdInst.update(btInput);
            // 获得密文
            byte[] md = mdInst.digest();
            return BytesToHexString.toString(md);
        } catch (Exception e) {
            throw new RuntimeException("加密失败");
        }

    }

    /**
     * 获取16位的加密摘要
     *
     * @param data
     * @return
     * @throws Exception
     */
    public static String encode16(String data) throws Exception {
        return encodeMD5(data).substring(8, 24);
    }

}
